export const subNum = (num) => {
  return {
    type: "SUB_NUM",
    num,
  };
};

export const addNum = (num) => {
  return {
    type: "ADD_NUM",
    num,
  };
};

export const addTodo = (name) => {
  return {
    type: "ADD_TODO",
    name,
  };
};

// 这种试图直接使用setTimeout的写法不能编译通过，直接报错
// export const delTodo = (id) => {
//   setTimeout(() => {
//     return {
//       type: "DEL_TODO",
//       id,
//     };
//   }, 1000);
// };

// 同步写法
export const delTodo1 = (id) => {
  return {
    type: "DEL_TODO",
    id,
  };
};

// 异步写法1
export const delTodoAsync = (id) => {
  return (dispatch) => {
    setTimeout(() => {
      dispatch(delTodo1(id));
    }, 1000);
  };
};

// 异步写法2
export const delTodo = (id) => {
  return (dispatch) => {
    // 提供异步代码，也可以发送请求
    setTimeout(() => {
      dispatch({
        type: "DEL_TODO",
        id,
      });
    }, 1000);
  };
};
